gtkcssshadowvalue: Use the blur surface as a mask, instead of painting it
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 28 Jul 2014 20:04:09 +0000 (22:04 +0200)
committerJasper St. Pierre <jstpierre@mecheye.net>
Tue, 29 Jul 2014 08:49:39 +0000 (10:49 +0200)
This will make it easier to use an A8 for our blurred surface instead of
a ARGB32, which makes things a lot easier and faster.

gtk/gtkcssshadowvalue.c

index 87300dcbc6d041ba38b4991b6b2f47d9667bc52f..da6d08cd08c7664153c8fc018a31c4668debab2b 100644 (file)
@@ -366,8 +366,8 @@ gtk_css_shadow_value_finish_drawing (const GtkCssValue *shadow,
   /* Blur the surface. */
   _gtk_cairo_blur_surface (surface, radius);
 
-  cairo_set_source_surface (original_cr, surface, 0, 0);
-  cairo_paint (original_cr);
+  gdk_cairo_set_source_rgba (original_cr, _gtk_css_rgba_value_get_rgba (shadow->color));
+  cairo_mask_surface (original_cr, surface, 0, 0);
 
   cairo_destroy (cr);
   cairo_surface_destroy (surface);